#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import os
from pinyin_generator import convert_to_pinyin, generate_html_content, generate_console_output

def process_file():
    # 获取脚本所在目录
    script_dir = os.path.dirname(os.path.abspath(__file__))
    
    # 读取text.txt文件
    try:
        # 构建text.txt的完整路径
        text_file_path = os.path.join(script_dir, 'text.txt')
        print(f"正在读取文件: {text_file_path}")
        
        with open(text_file_path, 'r', encoding='utf-8') as f:
            content = f.read().strip()
            
        # 如果文件为空，直接返回
        if not content:
            print("text.txt文件为空，无需处理")
            return
            
        print(f"成功读取文件，内容长度: {len(content)}字符")
        
        # 转换内容
        print("正在转换为拼音...")
        # 获取拼音结果
        result = convert_to_pinyin(content)
        pinyin_list = result['py']
        char_list = result['hz']
        
        print(f"转换完成，共处理了 {len(char_list)} 行文本")
        
        # 生成两种格式输出
        print("正在生成HTML和文本输出...")
        html_output = generate_html_content(content, pinyin_list, char_list)
        console_output = generate_console_output(content, pinyin_list, char_list)
        
        # 格式化控制台输出
        formatted_console_output = format_console_output(console_output)
        
        # 构建输出文件的完整路径
        html_output_path = os.path.join(script_dir, 'out.html')
        txt_output_path = os.path.join(script_dir, 'out.txt')
        
        # 将结果写入out.html（先清空再写入）
        with open(html_output_path, 'w', encoding='utf-8') as f:
            f.truncate(0)
            f.write(html_output)
        
        # 新增：将文本格式输出写入out.txt
        with open(txt_output_path, 'w', encoding='utf-8') as f:
            f.write(formatted_console_output)
            
        # 使用简短的相对路径显示
        txt_rel_path = os.path.basename(txt_output_path)
        html_rel_path = os.path.basename(html_output_path)
        
        print("\n" + "-"*50)
        print("转换完成！")
        print(f"- 文本文件已保存到: {txt_rel_path}")
        print(f"- HTML文件已保存到: {html_rel_path}")
        print(f"- 文件保存在目录: {script_dir}")
        print("-"*50)
            
    except FileNotFoundError:
        print(f"错误: 未找到文件 {text_file_path}")
        print("请确保text.txt文件位于脚本所在目录")
    except Exception as e:
        print(f"处理过程中出现错误: {str(e)}")

def format_console_output(console_output):
    # 将控制台输出按行分割
    lines = console_output.split('\n')
    
    # 初始化格式化后的输出
    formatted_output = []
    
    # 处理每一行
    for line in lines:
        formatted_output.append(line)
    
    # 返回格式化后的输出
    return '\n'.join(formatted_output)

if __name__ == "__main__":
    process_file()